<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	
</body>
</html>
<script>

	//	obj.name    
	//	等于obj['name']

	//创建数组
	//字面量创? & 构造函数创?

	//使用js关键? new  一?
	var color = new Array('red', 'gold ', 'pink');
	//使用数组文本来创建一?
	 //使用?号定义数组?称为数组直接?  相?Array() 代码? 速度? 操作方便...nb
	var color2 = ['red', 'gold ', 'pink'];

	//在数组里添加?
	color2[3] = 'abc';
	color2[5] = 'xxx';
	//在数组里获取?
	color[1];    // 'red'
	
	
	//获取数组最后一??
	//假?999999条取值取值最后一?
	//获取数组长度  color2.length  (常?属?.length)
	color2[color2.length-1]
		
	

	//toString()把数组转?的字符串   
	//toLocaleString() 
	var arr1 = ['red','red2','red3']
	arr1.toString();     		 //'red,red2,red3'	
    arr1.toLocaleString() 	     //'red,red2,red3'

	// 	//join()?将所有的数组元素结合为一?符串  ?定义分隔?	
	// 	var arr2= ['red','red2','red3']
	// 	arr2.join('')   'red1 red2 red3'`
	// 	arr2.join(':')  'red1:red2:red3'
	// 	?? toString跟join区别 都是?符串 
	// 	join()?定义 分隔? 默?? ,隔开
	// 	前者是切割成数组的形式，后者是将数组转换成字??

		
	// 	 pop()  尾部删除 push()   尾部添加 
	//   shift()头部删除 unshift()头部添加
	// 	//添加新的元素
	// 	//unshift()  头部添加元素
	// 	var arr3= ['red','red2','red3']
	// 	arr3.unshift('abc') // ['abc,red,red1,red2,red3']
	// 	//push()   尾部添加新元?
	// 	arr3.push('开一?') // ['abc,red,red1,red2,red3','开一?']

	
	
	// ！注? 把所有的元素位移到更低的 所引，返回上?弹出的?
	// pop()  删除最后一?    返回上?弹出的?
	// arr4 = ['red','red2','red3']
	// arr4.pop()                //red3
	// console.log(arr4)         //red red2
	// shift() 删去??      
	// arr4 = ['123','red2','red3']
	// arr4.shift()                //123
	// console.log(arr4)           //['red2,red3']
	

	
	
	
	// //concat  连接两个或者?? 数组    (数组合并)     该方法不会改变原有的数组
	// var arr7 = [1,2,3]
	// var arr8 = [4,5,6]   
	// var  arr9 = arr7.concat(arr8)
	// console.log(arr9)          //1,2,3,4,5,6
	

	
	// //sort()排序   面试见的多点?   
	// var arr =  ['red','green','block']
	// arr10.sort(); // ['block','green','red']    // 按字母排?
	// var arr11 = [1,2,34,421,12,24,]        // 1 12 2 24 ..   此??据unicode码点儿来操作
	


	// //面试?   
	// var arr11 = [1,2,34,421,12,24] 
	// var arr2=arr11.sort(function(a,b){
	// 	return a-b    //从小到大   1 2 12 24 34 421
	// 	return b-a    //从大到小   反之   
	// })
	// console.log(arr2)
	// 	//reverse()  倒序
		
		
	
	 //every
	 //()对数组的每一? 都运行给定的函数? 每一项都返回turn? 则返回true
			// every() ：依次遍历元素，判断每个元素?都为true
			// 	参数?	function(value,index,self){} ：每?素都会使用?函数判断?为true，当判断到一?false时，立即结束遍历?
			// 		　　	value ：数组遍历的元素	
			// 		　　	index ：元素序?	
			// 		　　	self ：Array?			
			// 	返回值：{Boolean} ：只有每?素都为true才返回true；只要一?false，就返回false?
				
			// 	例：	var demoArray = [1, 2, 3];
			// 		var rs = demoArray.every(function (value, index, self) {
			// 				return value > 0;
			// 			});
			// 		console.log(rs); // => true



	//forEach 用于调用数组里面的每?? ，并将元素传递给回调函数
		// forEach() ：依次遍历元素，执?指定的函数；无返回?
		// 	参数?	function(value,index,self){} ：每?素都会使用?函数判断?为true，当判断到一?false时，立即结束遍历?
		// 		　　	value ：数组遍历的元素	
		// 		　　	index ：元素序?	
		// 		　　	self ：Array?			
		// 	返回值：?	
		// 	例：	var demoArray = [1, 2, 3];
		// 		demoArray.forEach(function (value, index, self) {
		// 			console.log(value); // => 依?输出?1  2  3
		// 		});
				
				
			
	// 	map() ：依次遍历并计算每个元素，返回?算好的元素的数组   //需要ruturn
		// 	参数?	function(value,index,self){} ：每?素依次调用?函数，返回?算好的元?	
		// 			value ：数组遍历的元素
		// 			index ：元素序?
		// 			self ：Array?
		// 	返回值：{Array} 一??算好的元素的新的数组	
		// 	例：    [1, 2, 3].map(function (value, index, self) {
		// 			return value * 2;
		// 		    }); // => [2, 4, 6]
		
			


	//—————————————————————————————————?>filter用法  过滤
	// //filter()对数组的每一项都给定的函? ，返? 结果? 吐热的项组成的数?
 　//例?，在一个Array?删掉偶数，只保留奇数，可以这么写?
        // var arr = [1, 2, 4, 5, 6, 9, 10, 15];
        // var r = arr.filter(function (x) {
        //     return x % 2 !== 0;
        // });
        // console.log(r) // [1, 5, 9, 15]



//把一个Array?空字符串删掉，可以这么写?
        //  var arr = ['A', '', 'B', null, undefined, 'C', '  '];
        //  var r = arr.filter(function (s) {
        //      return s && s.trim(); // 注意：IE9以下的版?有trim()方法
        // });
        // console.log(r) // ['A', 'B', 'C']

 // ??2整除?
        // var arr3 = [1,2,1,12,2,2]
        // var rr = arr3.filter(function(item,index){
        //     return item%2==0
        // })
        // console.log(rr)
		

//去掉空数组空字?串、undefined、null
	var arr = ['1','2',undefined, '3.jpg',undefined]
	var newArr = arr.filter(item => item)
	console.log(newArr)   // 1  2 3.jpg  
		
//求数组的最大值
	var arr = [1,2,3,4,7,34,8]     
	var max=Math.max.apply(null,arr)  //34   Math.max（）参数不能为数组

//求数组的最小值
	var max=Math.min.apply(null,arr)  //1   

//合并数组并返回新数组的长度
	var arr1=new Array("1","2","3");
	var arr2=new Array("4","5","6");
	Array.prototype.push.apply(arr1,arr2); //6

</script>